package com.fy.utils;

import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang3.RandomStringUtils;

import java.util.Objects;
import java.util.UUID;

public class StringTools {


    /**兆换成字节
     *
     * @param mb
     * @return
     */
    public static long convertMBToBytes(long mb) {
        if(Objects.equals(mb,null)){
            mb=0;
        }
        return mb * 1024L * 1024L;
    }


    /**
     * 从URL中提取文件名
     *
     * @param url 文件的URL
     * @return 文件名
     */
    public static String extractFileName(String url) {
        if (url == null || url.isEmpty()) {
            return null;
        }

        // 查找最后一个斜杠的位置
        int lastSlashIndex = url.lastIndexOf('/');
        if (lastSlashIndex == -1) {
            return null;
        }

        // 提取文件名部分
        String fileName = url.substring(lastSlashIndex + 1);
        return fileName;
    }

    /**
     * 从OSS URL中提取文件名
     * 例如: http://fypan.oss-cn-hangzhou.aliyuncs.com/1739451896672_限时抢购.jpg
     * 返回: 1739451896672_限时抢购.jpg
     *
     * @param ossUrl OSS文件完整URL
     * @return 文件名部分
     */
    public static String getFileNameFromUrl(String ossUrl) {
        if (ossUrl == null || ossUrl.isEmpty()) {
            return "";
        }

        // 通过最后一个斜杠分割
        int lastSlashIndex = ossUrl.lastIndexOf('/');
        if (lastSlashIndex == -1 || lastSlashIndex == ossUrl.length() - 1) {
            return "";
        }

        return ossUrl.substring(lastSlashIndex + 1);
    }


    /**获取密码md5值
     *
     * @param password
     * @return
     */
    public static String getPasswordDD5String(String password) {
        return StringTools.isEmpty(password) ? null : DigestUtils.md5Hex(password);
    }

    /**随机获取5个字符作为分享密码
     *
     * @return
     */
    public static String getShareCodeRandom() {
        return UUID.randomUUID().toString().substring(0, 5);
    }


    /**判断空值
     *
     * @param str
     * @return
     */
    public static boolean isEmpty(String str) {
        if (null == str || "".equals(str) || "null".equals(str) || "\u0000".equals(str)) {
            return true;
        } else if ("".equals(str.trim())) {
            return true;
        }
        return false;
    }

    /**获取文件的扩展名：.jpg,.png......
     *
     * @param fileName
     * @return
     */
    public static String getFileSuffix(String fileName) {
        Integer index = fileName.lastIndexOf(".");
        if (index == -1) {
            return "";
        }
        String suffix = fileName.substring(index);
        return suffix;
    }

    /**获取指定位数的数字 一般为生成邮箱验证码
     *
     * @param count
     * @return
     */
    public static final String getRandomNumber(Integer count) {
        return RandomStringUtils.random(count, false, true);
    }

    /**获取邮箱前部分
     *
     * @param userEmail
     * @return
     */
    public static String getEmailPrefix(String userEmail) {
        // 检查电子邮件地址是否为空
        if (userEmail == null || userEmail.isEmpty()) {
            return null; // 返回null或适当的错误信息
        }
        // 使用indexOf方法找到@符号的位置
        int atIndex = userEmail.indexOf('@');
        // 如果找不到@符号，返回null或适当的错误信息
        if (atIndex == -1) {
            return null;
        }
        // 使用substring方法从开始位置截取到@符号的位置，获取电子邮件前缀
        return userEmail.substring(0, atIndex);
    }
}
